#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
////自定义冒泡排序
//void my_qsort(void* base, size_t num, size_t wide, int (*cmp)(const void*, const void*))
//{
//	size_t i;
//	for (i = 0; i < num - 1; i++)
//	{
//		size_t j;
//		for (j = 0; j < num - i - 1; j++)
//		{
//			if (cmp((char*)base+j*wide,(char*)base+(j+1)*wide) > 0)
//			{
//				size_t n = 0;
//				for (n = 0; n < wide; n++)
//				{
//					char tmp=*( (char*)base + j * wide+n);
//					*((char*)base + j * wide+n) = *((char*)base + (j + 1) * wide+n);
//					*((char*)base + (j + 1) * wide+n) = tmp;
//					
//
//				}
//			}
//		}
//	}
//
//
//}
//
//int com_int(const void* e1, const void* e2) {
//	return *(int*)e1 - *(int*)e2;
//}
////排列整形数组
//void test1() {
//	int int_arr[] = { 2,1,3,4,6,5,7,8,9,0 };
//	size_t num = sizeof(int_arr) / sizeof(int_arr[0]);
//	size_t wide= sizeof(int_arr[0]);
//	my_qsort(int_arr, num, wide, com_int);
//	size_t i;
//	for (i = 0; i < num; i++)
//	{
//		printf("%d ", int_arr[i]);
//	}
//	printf("\n");
//}
//
//int com_char(const void* e1, const void* e2) {
//	return strcmp(*(char**)e1, *(char**)e2);
//}
////排列字符数组
//void test2() {
//	char* char_arr[] = { "zhang","qiao","ma","cheng","wang" };
//	size_t num = sizeof(char_arr) / sizeof(char_arr[0]);
//	size_t wide = sizeof(char_arr[0]);
//	my_qsort(char_arr, num, wide, com_char);
//	size_t i;
//	for (i = 0; i < num; i++)
//	{
//		printf("%s ", char_arr[i]);
//	}
//	printf("\n");
//}
//int main() {
//	test1();
//	test2();
//	return 0;
//}




//int main()
//{
//    int a = 0;
//    int b = 0;
//    int c = 0;
//    int d = 0;
//    int e = 0;
//    for (a = 1; a <= 5; a++) {
//        for (b = 1; b<= 5; b++) {
//            for (c = 1; c <= 5; c++) {
//                for (d = 1; d <= 5; d++) {
//                    for (e = 1; e <= 5; e++) {
//                        if (((a == 3) + (b == 2) == 1) &&
//                            ((b == 2) + (e == 4) == 1) &&
//                            ((c == 1) + (d == 2) == 1) &&
//                            ((c == 5) + (d == 3) == 1) &&
//                            ((e == 4) + (a == 1) == 1))
//                        {
//                            if (a * b * c * d * e == 120)
//                                printf("a=%d b=%d c=%d d=%d e=%d ", a, b, c, d, e);
//                        }
//
//                    }
//                }
//            }
//        }
//    }
//
//    return 0;
//}


//日本某地发生了一件谋杀案，警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
//以下为4个嫌疑犯的供词:
//A说：不是我。
//
//B说：是C。
//
//C说：是D。
//
//D说：C在胡说
//
//已知3个人说了真话，1个人说的是假话。

//现在请根据这些信息，写一个程序来确定到底谁是凶手。
//int main() {
//	char k = 0;
//	for (k = 'a'; k <= 'd'; k++)
//	{
//		if ((k != 'a') + (k == 'c') + (k == 'd') + (k != 'd') == 3)
//		{
//			printf("%c", k);
//		}
//
//
//
//	}
//
//	return 0;
//}
//
//#include <stdio.h>
//
//// 计算组合数 C(n, k)
//int combination(int n, int k) {
//    if (k == 0 || k == n) {
//        return 1;
//    }
//    else {
//        return combination(n - 1, k - 1) + combination(n - 1, k);
//    }
//}
//
//// 打印杨辉三角
//void print_pascal_triangle(int rows) {
//    for (int i = 0; i < rows; i++) {
//        // 打印空格，用于对齐
//        for (int j = 0; j < rows - i; j++) {
//            printf(" ");
//        }
//        for (int k = 0; k <= i; k++) {
//            // 计算并打印杨辉三角的元素
//            printf("%d ", combination(i, k));
//        }
//        printf("\n");
//    }
//}
//
//int main() {
//    int rows = 10; // 可以修改这个值来改变杨辉三角的行数
//    print_pascal_triangle(rows);
//    return 0;
//}




//void find_k(int arr[3][3], int r, int c, int k)
//{
//	int x = 0;
//	int y = c - 1;
//	int flag = 0;
//	while (x < r || y >= 0)
//	{
//		if (arr[x][y] < k)
//			x++;
//		else if (arr[x][y] > k)
//			y--;
//		else
//		{
//			flag = 1;
//			printf("找到了下标是%d %d\n", x, y);
//			break;
//		}
//	}
//	if (flag == 0)
//		printf("找不到");
//}
//
//int main()
//{
//	int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };
//	int k = 7;
//	find_k(arr,3,3,7);
//	return 0;
//}
//#include<string.h>
//void left_move(char* str, int k) {
//	int i;
//	int len = strlen(str);
//	k%= len;
//	for (i = 0; i < k; i++)
//	{
//		char tmp = *str ;
//		int j;
//		for (j = 0; j < len-1; j++)
//		{
//			*(str+j) = *(str + j+1);
//		}
//		*(str + len - 1) = tmp;
//	}
//}
//
//int main() {
//	int k=2;
//	char arr[]= "abcdef";
//	left_move(arr, k);
//	printf("%s", arr);
//	return 0;
//}





//#include<string.h>
//
//void left_move(char* str, int k) {
//	int i;
//	int len = strlen(str);
//	k %= len;
//	for (i = 0; i < k; i++)
//	{
//		char tmp = *str;
//		int j;
//		for (j = 0; j < len - 1; j++)
//		{
//			*(str + j) = *(str + j + 1);
//		}
//		*(str + len - 1) = tmp;
//	}
//}
//int is_left_move(char arr1[], char arr2[])
//{
//	int len1 = strlen(arr1);
//	int len2 = strlen(arr2);
//	if (len1 != len2)
//		return 0;
//	int i;
//	for (i = 0; i < len1; i++)
//	{
//		left_move(arr1, 1);
//		if (strcmp(arr1, arr2) == 0)
//			return 1;
//	}
//	return 0;
//}
//int main() {
//	char arr1[] = "ABCED";
//	char arr2[] = "CEDAB";
//	int ret=is_left_move(arr1,arr2);
//	if (ret == 1)
//		printf("YES");
//	if (ret == 0)
//		printf("NO");
//	return 0;
//}
